package main

var f = func(i int) {
	print("x")
}

func main() {
	f := func(i int) {
		print(i)
		if i > 0 {
			f(i - 1)
		}
	}
	f(10)
}

//1:在全局作用域中,定义了一个变量 f，它被初始化为一个打印字符串 "x" 的匿名函数。
//2:在 main 函数中,又定义了一个同名的局部变量 f，它被初始化为另一个匿名函数。
//3:在 main 函数中调用 f(10) 时,实际上调用的是局部变量 f，而不是全局变量 f。
//4:这个局部匿名函数首先打印参数 i，也就是 10。
//5:然后,由于 i > 0 为真,它会递归调用自己(即局部变量 f)，但此时全局变量 f 已经被覆盖了。
//6:递归调用时,由于没有定义新的 f 函数,所以会使用全局变量 f，即打印字符串 "x"。
//所以最终输出是 10x。
